Embodiments of the present invention relate generally to computer systems, and in particular to cloning a virtual machine in a virtual computer environment.
Virtual machine technology is becoming prevalent in distributed information technology (IT) markets and cloud computing industries. Virtualization is an abstraction layer that allows multiple virtual environments with heterogeneous operating systems to run in isolation, side-by-side on a same physical machine. Virtualization also enables decoupling underlying physical hardware from associated operating systems. Still further, virtualization enables hiding physical information and resources. Many efforts are currently underway to improve performance and simplify system management of virtual machines. One technology for virtual machine improvements is the process of “cloning” a virtual machine to create multiple further virtual machines based on the virtual machine that was cloned.
A clone designates a copy of an existing virtual machine. The existing virtual machine from which the clone is created is generally referred to as the clone parent. When the cloning operation is completed, the clone is a separate virtual machine, different from the parent virtual machine.
Cloning allows making a number of copies of a same virtual machine from a single installation and configuration process. This saves time in the virtual environment installation process which requires creating the virtual machines and installing a guest operating system and guest applications for each virtual machine. Cloning is particularly useful when there is a need to deploy many identical virtual machines to a group. For example, a company department can generate a clone instance of a virtual machine for each employee within the department, such that each virtual machine includes a suite of preconfigured office applications. As another example, a teacher can clone a virtual machine to create a clone instance for each student, where each clone includes all the lessons and labs required for a school term. A virtual machine can be configured with a complete development environment and then be cloned repeatedly as a baseline configuration for software testing.
Conventional technologies for cloning a virtual machine comprise an initial phase of creating an image of a virtual machine by recording the contents of its file system(s) and/or memory address space. Then, a new virtual machine is started by making a copy of the recorded image. The parent virtual machine and its associated metadata are referred to as a template.
Such conventional cloning technologies generally provide a full clone of a virtual machine. The only modifications that can be made to the virtual machine template are activation changes needed to configure a Virtual Machine with new hostname/Internet Protocol (IP) address for example. Activation changes do not change the Virtual Machine but allows it to work with different parameters like network settings or credentials. Such full clone does not allow optimization of the virtual machine resource allocation and the reuse of already existing software assets.